"""
如果一个方法只有一个返回值，且函数体中只有一行代码，即可使用lambda简化
简单案例 ：(lambda a,b : a+b)(1,2)
"""


def add(a, b):
    c = a + b
    return c


print(add(1, 2))

# 使用lambda表达式简化
print((lambda a, b: a + b)(1, 2))

"""
一下给几个lambda表达式的案例
"""
print("无参数lambda")
print((lambda: 100)())  # 表示一个无参方法，返回值是100

"""
一个参数 
"""
print("一个参数lambda")
print((lambda a: a * 100)(10))

print("两个参数lambda")
print((lambda a, b: a * b)(3, 4))

print("默认参数lambda")
print((lambda a, b, c=10: a * b + c)(3, 4, 1))

print("默认参数lambda")
print((lambda a, b, c=10: a * b + c)(3, 4, 1))

print("可变参数，位置传参数")
print((lambda *params: params)(1, 2, 3))

print("可变参数，关键词传参数")
print((lambda **keywords: keywords)(name='TOM', age=3))

print(" * * " * 5 + "lambda表达式的高阶使用" + " * * " * 5)
print("带判断的lambda表达式")
print((lambda a, b: a if a >= b else b)(100, 200))

print("列表中保存字典，按照字典的key的值排序")
students = [
    {
        'name': 'Tome',
        'age': '12'
    },
    {
        'name': 'Anmmy',
        'age': '16'
    },
    {
        'name': 'Jurry',
        'age': '14'
    },
]

# sort 默认是升序排序
students.sort(key=(lambda item : item['age']))
print(students)

# reverse=True 就是降序
students.sort(key=lambda item : item['age'] ,reverse=True)
print(students)

# 按照姓名的值升序排序
students.sort(key=lambda item : item['name'])
print(students)

# 按照姓名的值降序排序
students.sort(key=lambda item :item['name'] , reverse=True)
print(students)

